package br.com.pguide.activity;

import java.util.ArrayList;

import br.com.pguide.R;
import br.com.pguide.estrutura.Item;
import br.com.pguide.parser.Parser;
import br.com.pguide.webservice.WebService;

import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class ListaDeResultadosDaBusca extends ListActivity {


    public static ArrayList<Item> itens;
    private ActivityList listAdapter;
    public static String username;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        getListView().setBackgroundDrawable(getResources().getDrawable(R.drawable.common_background));

        Intent it = getIntent();
        username = it.getStringExtra("username");
        itens = new ArrayList<Item>();
        ArrayList<String> nomes = new ArrayList<String>(it.getStringArrayListExtra("nomes"));
        ArrayList<String> marcas = new ArrayList<String>(it.getStringArrayListExtra("marcas"));
        ArrayList<Integer> categorias = new ArrayList<Integer>(it.getIntegerArrayListExtra("categorias"));
        ArrayList<String> tamanhos = new ArrayList<String>(it.getStringArrayListExtra("tamanhos"));
        ArrayList<Integer> unidades = new ArrayList<Integer>(it.getIntegerArrayListExtra("unidades"));
        ArrayList<Integer> ids = new ArrayList<Integer>(it.getIntegerArrayListExtra("ids"));
       
        String[] array_nomes = new String[nomes.size()];
        for (int i=0; i<nomes.size(); i++) {
                Item item = new Item();
                item.setNome(nomes.get(i));
                item.setMarca(marcas.get(i));
                item.setCategoria(categorias.get(i));
                item.setTamanho(tamanhos.get(i));
                item.setUnidade_de_medida(unidades.get(i));
                item.setID(ids.get(i));
            itens.add(item);
           
            array_nomes[i] = nomes.get(i);
        }
        atualizar(itens, array_nomes);
    }

    public void atualizar(ArrayList<Item> itens1, String[] nomes) {
       
        listAdapter = new ActivityList(this, android.R.id.text1, itens1, nomes);

        setListAdapter(listAdapter);
        ListView lv = getListView();
        lv.setOnItemClickListener(new OnItemClickListener() {
          public void onItemClick(AdapterView<?> parent, View view,
              int position, long id) {
                 
                  Intent it = new Intent(ListaDeResultadosDaBusca.this, ItemSelecionado.class);
                  it.putExtra("id_item", itens.get(position).getID());
                  it.putExtra("username", username);
                  startActivity(it);
          }
        });
    }

//    @Override
//    protected void onListItemClick(ListView l, View v, int position, long id) {
//         Bundle bundle = new Bundle(); //bundle is like the letter
//         bundle.putString ("user", listAdapter.getItem(position)); //arg1 is the keyword of the txt, arg2 is the txt
//    }

//    private OnClickListener callBtnListener = new OnClickListener(){
//        public void onClick(View v) {
//            Log.i("Info", "Username: " + v.getTag());
//        }
//    };

    class ActivityList extends ArrayAdapter<String>{

        ArrayList<Item> itens = null;
        String[] categorias_array = null;
        String[] unidades_array = null;
        String[] nomes = null;
       
        public ActivityList(Context context, int textViewResourceId, ArrayList<Item> itens, String[] nomes) {
            super(context, textViewResourceId, nomes);
            this.itens = itens;
            unidades_array = Parser.lista_unidades_de_medida(WebService.get_unidades_de_medida());
            categorias_array = Parser.lista_categorias(WebService.get_categorias());
        }
       
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder;
            if(convertView == null){
                LayoutInflater inflater = LayoutInflater.from(ListaDeResultadosDaBusca.this);
                convertView = inflater.inflate(R.layout.test_list, parent, false);
                holder = new ViewHolder();

                holder.nome = (TextView) convertView.findViewById(R.id._nome);
                holder.marca = (TextView) convertView.findViewById(R.id._marca);
                holder.categoria = (TextView) convertView.findViewById(R.id._categoria);
                holder.tamanho = (TextView) convertView.findViewById(R.id._tamanho);
                holder.unidade = (TextView) convertView.findViewById(R.id._unidade);

                convertView.setTag(holder);
            } else{
                holder = (ViewHolder) convertView.getTag();
            }

            holder.nome.setText(itens.get(position).getNome());
            holder.tamanho.setText(itens.get(position).getTamanho());
            holder.marca.setText(itens.get(position).getMarca());
            holder.categoria.setText(categorias_array[itens.get(position).getCategoria()]);
            holder.unidade.setText(unidades_array[itens.get(position).getUnidade_de_medida()]);
            return convertView;
        }
    }

    static class ViewHolder{
        TextView nome;
        TextView categoria;
        TextView marca;
        TextView tamanho;
        TextView unidade;
    }

}
